<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <!-- 
    语法：async 修饰在方法前。await 写在一个异步操作之前
    1.async 修饰的方法 会自动返回一个promise对象
    2.如果在async 方法内部return了一个值 那么这个值 可以在then的回调函数中拿到
    3.当代码执行到await的时候会等待await后面的异步方法执行完之后 才往下执行
   -->

  <script>
    // 1.async 修饰的方法 会自动返回一个promise对象
    // async function fn() { }
    // console.log(fn()); 

    // 2.如果在async 方法内部return了一个值 那么这个值 可以在then的回调函数中拿到
    // async function fn() { 
    //   return 123
    // }
    // fn().then(res=>{
    //   console.log(res);
    // })

    // 当代码执行到await的时候会等待await后面的异步方法执行完之后 才往下执行
    function timeOut() {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          console.log('执行了');
          resolve()
        }, 2000);
      })
    }

    async function fn() {
      await timeOut()
      console.log(123)
    }
    fn();
  </script>
</body>

</html>